iT邦幫忙

2021 iThome 鐵人賽

DAY 12
0

沒想到硬體的章節會因為限制結果直接炸裂XD 不過沒關係,我們可以到時候拿到板子再回頭寫相關的事情。
這篇開始,我們會先暫時將重心轉移到所謂的「發行版」bootstrapping的施作上,終極目標是讓Alpine Linux能夠跑在我們的OrangeCrab w/ LiteX/VexRiscv (暫時是sfp mode)下。

發行版(distribution/distro)這個概念,是UNIX-like作業系統生態系底下比較常見的說法,因為UNIX-like作業系統的系統核心(kerenl)、與userspace搭配有比較明確地有分隔,以系統呼叫作為最天然的分界線,也因此會有一個Linux、諸多種樣貌的多樣性(紛亂?)發展;相較之下,Windows生態系,因為作業系統核心的系統呼叫因為安全及許多理由、並非直接暴露給第三方軟體開發人員,開發者以Win32/Win64等等userspace API為基底作開發,幾乎不太可能跳脫Microsoft設定下來的生態系樣貌。

然而,現代的distro到底是什麼?這個概念的定義有很多種,有些人覺得要像是Debian、Fedora這類能夠安裝套件地才算,有些人則覺得buildroot這種也算,我個人的理解是:「能夠以程序化的流程,模組化的組建出一套userspace環境的」,即是一種distro。而以這樣的定義來敘述,Linux From Scratch最初在我的理解中,算是一個現代distro的前身,因為他仍有需要人的手動介入、而非全自動化地完成usperspace構建。而有了Automated Linux From Scratch,我覺得它便是個類似buildroot的B〝distro〞了。

為什麼我會持這樣的觀點,那我們就不得不提起至今在各大Linux世界仍舊看得到身影的BSD ports tree這個概念。在歷史上,基於AT&T UNIX所出現的〝Berkeley Software Distribution〞,可以說是「發行版」這個名詞的締造者之一,起源於當時是訪問學者的Ken Thompson與研究生Bill Joy,為了脫離AT&T/Bell Lab的宰制,打造出來了基於UNIX kernel、但是有著截然不同的userpsace生態系:「我們叫做柏克萊標準發行版,AT&T那包是什麼東西。(戰)」
而到了後來連kernel都進行大量修改/re-implement的Free/Net/OpenBSD體系時,管理龐大的source code base與彼此之間的相依性、版本依賴已經是極為複雜的問題。是焉,ports tree誕生,它是一套由shell script與makefile打造的建構系統(build system),一個使用者可以輕鬆地在一個套件的子目錄底下、試其需要決定要不要改套件的描述檔案來組建程式;而在其tree的根目錄下〝make world〞時,非常形象化地,你會獲得一個完整從各個套件編譯、打包好的「世界」,這也是我們今天要講的核心 — — 從頭打造一個Alpine 〝World〞。

幾乎所有早期的UNIX-like作業系統開發者,都有使用過BSD ports的經驗,也因此有許許多多的借鑒。Gentoo的Portage因為作者同時橫跨FreeBSD ports開發,可說是ports的旁系血親;Arch Linux的Arch Build System也是濃濃的ports風格,文件直接跟你說:我們是ports-like system;而受Arch Linux影響至深的Alpine Linux,則更是直接將source tree命名為:aports,the Alpine Linux ports。

目前 aports,與負責處理編譯housekeeping (如建立local repo)的abuild,都host在Alpine的gitlab上面。其riscv64的abuild支援,目前已經merge回去。在 aports 其中有一隻bootstrap.sh可供bootstrap最基礎的alpine-base meta package。而其ports tree的修改,目前還在上游的路上。

我們預期下一章節開始,將會開始深度跳入 aports 的 bootstrap.sh,並且trouble shoot相關問題。


上一篇
LiteX/VexRiscv 簡介與使用 (二點七五) 斯有海與陸地植物
下一篇
Alpine Linux Porting (一點一?)
系列文
Port Alpine Linux to open source RISC-V platform30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言